package com.wxb.quartz.alipay;

/**
 * 支付宝创建订单(创建订单交易准备数据)
 *
 * @author : 王校兵
 * @version : v1.0
 * @time : 2017-07-06
 */
public class TradePrecreate {

    /**
     * (必填) 商户网站订单系统中唯一订单号，64个字符以内，只能包含字母、数字、下划线
     * 需保证商户系统端不能重复，建议通过数据库sequence生成，
     */
    private String out_trade_no;

    /**
     * 销售产品码，与支付宝签约的产品码名称。 注：目前仅支持FAST_INSTANT_TRADE_PAY
     */
    private String product_code = "FAST_INSTANT_TRADE_PAY";

    /**
     * (必填) 订单总金额，单位为元，不能超过1亿元
     * 如果同时传入了【打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【打折金额】+【不可打折金额】
     */
    private String total_amount;

    /**
     * (必填) 订单标题，粗略描述用户的支付目的。如“xxx品牌xxx门店当面付扫码消费”
     */
    private String subject = "北京新方通信技术有限公司虚拟呼叫中心充值";

    /**
     * 订单描述，可以对交易或商品进行一个详细地描述，比如填写"购买商品2件共15.00元"
     */
    private String body = "充值缴费";

    /**
     * 订单包含的商品列表信息，Json格式，详见商品明细说明
     */
    private String goods_detail;

    /**
     * 商品明细说明
     * 商品的展示地址
     */
    private String show_url;

    /**
     * 公用回传参数，如果请求时传递了该参数，则返回给商户时会回传该参数。
     * 支付宝只会在异步通知时将该参数原样返回。本参数必须进行UrlEncode之后才可以发送给支付宝
     */
    private String passback_params;

    /**
     * 业务扩展参数
     */
    private String extend_params;

    /**
     * 业务扩展参数说明
     * 系统商编号，该参数作为系统商返佣数据提取的依据，请填写系统商签约协议的PID
     */
    private String sys_service_provider_id;

    /**
     * 商品主类型：0—虚拟类商品，1—实物类商品（默认）
     */
    private String goods_type;

    /**
     * 该笔订单允许的最晚付款时间，逾期将关闭交易。
     * 取值范围：1m～15d。m-分钟，h-小时，d-天，1c-当天（1c-当天的情况下，无论交易何时创建，都在0点关闭）。
     * 该参数数值不接受小数点， 如 1.5h，可转换为 90m。
     * 该参数在请求到支付宝时开始计时。
     */
    private String timeout_express;

    /**
     * 可用渠道，用户只能在指定渠道范围内支付
     * 当有多个渠道时用“,”分隔
     * 注：与disable_pay_channels互斥
     */
    private String enable_pay_channels;

    /**
     * 禁用渠道，用户不可用指定渠道支付
     * 当有多个渠道时用“,”分隔
     * 注：与enable_pay_channels互斥
     */
    private String disable_pay_channels;

    /**
     * 针对用户授权接口，获取用户相关数据时，用于标识用户授权关系
     */
    private String auth_token;

    /**
     * PC扫码支付的方式，支持前置模式和跳转模式。
     * 前置模式是将二维码前置到商户的订单确认页的模式。需要商户在自己的页面中以 iframe 方式请求支付宝页面。具体分为以下几种：
     * 0：订单码-简约前置模式，对应 iframe 宽度不能小于600px，高度不能小于300px；
     * 1：订单码-前置模式，对应iframe 宽度不能小于 300px，高度不能小于600px；
     * 3：订单码-迷你前置模式，对应 iframe 宽度不能小于 75px，高度不能小于75px；
     * 4：订单码-可定义宽度的嵌入式二维码，商户可根据需要设定二维码的大小。
     * <p>
     * 跳转模式下，用户的扫码界面是由支付宝生成的，不在商户的域名下。
     * 2：订单码-跳转模式
     */
    private String qr_pay_mode;

    /**
     * 商户自定义二维码宽度
     * 注：qr_pay_mode=4时该参数生效
     */
    private String qrcode_width;

    public TradePrecreate() {
    }

    public TradePrecreate(String out_trade_no, String total_amount) {
        this.out_trade_no = out_trade_no;
        this.total_amount = total_amount;
    }

    public String getOut_trade_no() {
        return out_trade_no;
    }

    public void setOut_trade_no(String out_trade_no) {
        this.out_trade_no = out_trade_no;
    }

    public String getProduct_code() {
        return product_code;
    }

    public void setProduct_code(String product_code) {
        this.product_code = product_code;
    }

    public String getTotal_amount() {
        return total_amount;
    }

    public void setTotal_amount(String total_amount) {
        this.total_amount = total_amount;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public String getGoods_detail() {
        return goods_detail;
    }

    public void setGoods_detail(String goods_detail) {
        this.goods_detail = goods_detail;
    }

    public String getShow_url() {
        return show_url;
    }

    public void setShow_url(String show_url) {
        this.show_url = show_url;
    }

    public String getPassback_params() {
        return passback_params;
    }

    public void setPassback_params(String passback_params) {
        this.passback_params = passback_params;
    }

    public String getExtend_params() {
        return extend_params;
    }

    public void setExtend_params(String extend_params) {
        this.extend_params = extend_params;
    }

    public String getSys_service_provider_id() {
        return sys_service_provider_id;
    }

    public void setSys_service_provider_id(String sys_service_provider_id) {
        this.sys_service_provider_id = sys_service_provider_id;
    }

    public String getGoods_type() {
        return goods_type;
    }

    public void setGoods_type(String goods_type) {
        this.goods_type = goods_type;
    }

    public String getTimeout_express() {
        return timeout_express;
    }

    public void setTimeout_express(String timeout_express) {
        this.timeout_express = timeout_express;
    }

    public String getEnable_pay_channels() {
        return enable_pay_channels;
    }

    public void setEnable_pay_channels(String enable_pay_channels) {
        this.enable_pay_channels = enable_pay_channels;
    }

    public String getDisable_pay_channels() {
        return disable_pay_channels;
    }

    public void setDisable_pay_channels(String disable_pay_channels) {
        this.disable_pay_channels = disable_pay_channels;
    }

    public String getAuth_token() {
        return auth_token;
    }

    public void setAuth_token(String auth_token) {
        this.auth_token = auth_token;
    }

    public String getQr_pay_mode() {
        return qr_pay_mode;
    }

    public void setQr_pay_mode(String qr_pay_mode) {
        this.qr_pay_mode = qr_pay_mode;
    }

    public String getQrcode_width() {
        return qrcode_width;
    }

    public void setQrcode_width(String qrcode_width) {
        this.qrcode_width = qrcode_width;
    }

    @Override
    public String toString() {
        return "TradePrecreate{" +
                "out_trade_no='" + out_trade_no + '\'' +
                ", product_code='" + product_code + '\'' +
                ", total_amount='" + total_amount + '\'' +
                ", subject='" + subject + '\'' +
                ", body='" + body + '\'' +
                ", goods_detail='" + goods_detail + '\'' +
                ", show_url='" + show_url + '\'' +
                ", passback_params='" + passback_params + '\'' +
                ", extend_params='" + extend_params + '\'' +
                ", sys_service_provider_id='" + sys_service_provider_id + '\'' +
                ", goods_type='" + goods_type + '\'' +
                ", timeout_express='" + timeout_express + '\'' +
                ", enable_pay_channels='" + enable_pay_channels + '\'' +
                ", disable_pay_channels='" + disable_pay_channels + '\'' +
                ", auth_token='" + auth_token + '\'' +
                ", qr_pay_mode='" + qr_pay_mode + '\'' +
                ", qrcode_width='" + qrcode_width + '\'' +
                '}';
    }
}
